<?php

include_once '../entities/Grupo.php';
include_once '../entities/Alumno.php';
include_once '../entities/Profesor.php';
include_once '../entities/CursoTaller.php';

include_once 'CtlGeneral.php';

include_once '../boundaries/generarRerportes/BoundFormularioReporte.php';

class CtlReportes extends CtlGeneral {
    
    public function __construct($param) {
        
        switch ($param['opc']) {
            
            case 'menuPrinc': $this->menuPrinc();
                break;
            
            case 'hacerRepor': $this->hacerReporte($param);
                break;
            
            default : echo 'NADA!!!';
        }
    }
    
    public function hacerReporte ($param) {
        $grupos = new Grupo();
        $alumnos = new Alumno();
        $cursosTalleres = new CursoTaller();
        
        $fecIniRep = $this->obtenerFechaLimite($param['mesIni'], "INI");
        $fecFinRep = $this->obtenerFechaLimite($param['mesFin'], "FIN");
        
        //echo "WHERE grestado != 'X' AND grfecini >= '$fecIniRep' AND grfecini <= '$fecFinRep'"; 
        
        $listaGrupos = $grupos->listarGrupos(" WHERE grestado != 'X' AND grfecini >= '$fecIniRep' AND grfecini <= '$fecFinRep' ");
        
        $listaGruposReturn[0] = "";
        $eTotal = 0;
        
        foreach ($listaGrupos as $grupo) {
            
            //Variable que guarda el total de alumnos inscritos validos (SIN DEVOLUCION DE PAGO)
            $totalInscritos = 0;
            $ingresos = 0;
            $egresos = 0;
            //Obtiene el total de alumnos para saber cuantos estan inscritos y determinar la cantidad de ingresos
            $listaAlumnos = $alumnos->listarAlumnos(" JOIN INSCRIPCION ON (inidalumno = alidalumno) WHERE inidgrupo = $grupo[gridgrupo] ");
            
            //En este ciclo obtenemos el total de ingresos del grupo en turno y tambíen el número de alumnos inscritos
            if ($listaAlumnos != false) {
                foreach ($listaAlumnos as $alumno) {
                
                    if (!$this->encontrarFile($this->generarNombresClaves($alumno['alidalumno'], $grupo['gridgrupo']), "DP")) {
                        $totalInscritos++;

                        $ingresos += ($alumno['intipoalum'] == "I" ? ($grupo['grprecio'] / 2) : $grupo['grprecio'] );
                    }
                }
            }
            
            $numModulos = $cursosTalleres->obtenerNumeroModulos($grupo['gridcursotaller']);
            $numProfesores = $grupos->numProfeReales($grupo['gridgrupo']);

            $egresos = $grupo['grpagoporhora'] * $numModulos;
            
            $grupo['ingresos'] = $ingresos;
            $grupo['egresos'] = $egresos;
            $grupo['numModulos'] = $numModulos;
            $grupo['numProfesores'] = $numProfesores;
            $grupo['totalInscritos'] = $totalInscritos;
            
            $listaGruposReturn[$eTotal] = $grupo;
            $eTotal++;
        }
        
        $return['grupos'] = $listaGruposReturn;
        $return['fecIniRep'] = $fecIniRep;
        $return['fecFinRep'] = $fecFinRep;
        $return['totalGrupo'] = $eTotal + 1;
        
        new BoundFormularioReporte($return);
    }
    
    //Funcion para obtener el limite del mes 1 o 31, pero puede ser 30, 28 u 29
    public function obtenerFechaLimite ($fecha, $tipo) {
        
        if ($tipo == "INI") {
            return $fecha . "-01";
        } else {
            //Obtenemos la fecha del servidor y verificamos que el día no sobrepase el 28, si es así lo pasamos a 28
            $fecha = explode("-", $fecha);

            //Si el día es mayor a 28, lo hacemos día 28
            if ($fecha[1] == 2) {
                $fecha[2] = 28;
            } else if ($fecha[1] == 1 && $fecha[1] == 3 && $fecha[1] == 5 && $fecha[1] == 7 && $fecha[1] == 8 && $fecha[1] == 10 && $fecha[1] == 12) {
                $fecha[2] = 31;
            } else {
                $fecha[2] = 30;
            }

            return $fecha[0].'-'.$fecha[1].'-'.$fecha[2];
        }
    }

    public function menuPrinc () { 
        
        echo $this->insertarTitulo("Generar Reportes");
        ?>
        <form name="frmRepor" id="frmRepor">
            <br><table >
                <tr>
                    <td>
                        Inicia el mes del año: 
                        <input type="month" name="mesIni" class="required">
                    </td>
                </tr>
                <tr>
                    <td>
                        Termina el mes y año: 
                        <input type="month" name="mesFin" class="required">
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="button" value="Hacer reporte" onclick="ajax('controllers/CtlReportes.php', 'hacerRepor', 'frmRepor', 'contenido')" >
                    </td>
                </tr>
            </table>
        </form>
    <?}
}

new CtlReportes(( isset($_POST['opc']) ? $_POST : $_GET ));
?>